#include<bits/stdc++.h>
using namespace std;

int main() {
    // read data
    int n;
    cin >> n;
    vector<vector<int>> v(n);
    vector<int> team;
    for (int _ = 1; _ <= n; _++) {
        int t;
        cin >> t;
        team.push_back(t);
    }

    
    // calc postion
    int size = n;
    for (int mod = 0, j = 1; size != 0; mod++) {
        // mod 作为索引
        if (mod >= n) mod = 0;
        // team[mod] == -1 表示该team已经分配完位置
        if (team[mod] == -1) {
            continue;
        }
        // 分配位置
        v[mod].push_back(j);
        // 最后一个team分配的时候也需要隔开分配 因此当只剩下最后一个队的时候 需要每次加二
        if (size != 1) j++;
        else  j += 2;
        // 分配完之后需要更改其team的值
        if (team[mod] != -1 && v[mod].size() == team[mod] * 10) {
            team[mod] = -1;
            size--;
        }
    }
    
    // cout data
    for (int i = 0; i < n; i++) {
        cout << "#" << i + 1 << endl;
        for (int j = 0; j < v[i].size(); j++) {
            if (j % 10 == 9) cout << v[i][j] << endl;
            else cout << v[i][j] << " ";
        }
    }

    return 0;
}